\section{Aspetto Tecnologico}
Di seguito saranno descritte le tecnologie utilizzate per sviluppare e rendere disponibile il progetto proposto.

Data la natura del progetto, è necessario strutturarlo seguendo un sistema client-server, quindi i client accederanno ai servizi esposti dal server.

Il server dovrà essere in grado di soddisfare un numero elevato di richieste, ma il costo di un ottimo server sono elevati, per questo la \nomeAzienda ~ha deciso di sfruttare sistemi \gls{Cloud} di recente concezione, consentendo così di mantenere i costi molto bassi.

\subsection{Amazon EC2}
\label{amazon}
Per l'hosting della web application verrà utilizzato il servizio \gls{Elastic Compute Cloud} (EC2) offerto da Amazon, grazie a tale servizio è possibile in pochi click configurare un server virtuale pronto all'uso, inoltre grazie all' autoscaling il numero di server virtuali attivi sarà deciso automaticamente in base al numero di richieste inoltrate al sito, quindi il numero di istanze usate (server) aumenterà automaticamente durante i picchi di richieste per mantenere le prestazioni, e diminuirà automaticamente durante le pause, per minimizzare i costi. 

Il traffico in entrata sarà automaticamente distribuito su più istanze \gls{EC2}, in questo modo le prestazioni saranno migliori, conferendo all'utente un'ottima esperienza di navigazione ed utilizzo del nostro servizio.

\subsection{Amazon S3}

Per l'archiviazione di tutti i dati sarà usato il servizio \gls{Amazon S3}, con esso il costo per Gigabyte risulta molto basso, ci consente quindi di mantenere in memoria una grossa mole di dati con costi bassi di mantenimento.

Tale servizio risulta molto scalabile e sicuro, il prezzo si basa sulla quantità effettivamente occupata, ed i dati risultano inaccessibili se non tramite il nostro servizio.

\subsection{Framework Spring}

Per l'intera applicazione sarà usato il framework Spring, grazie ad esso infatti sarà possibile sviluppare il back-end ed il front-end con facilità, permette inoltre una strutturazione guidata del codice secondo il \gls{Design Pattern} \gls{MVC}, sfruttando il \gls{Dependency Injection}, inoltre garantisce una semplice scrittura dei test e consente configurazioni fondamentali semplicemente tramite file \gls{XML}.
Infine permette di applicare la gestione della sicurezza al back-end tramite configurazioni esterne al codice applicativo. Questo permette un disaccoppiamento ulteriore tra gli aspetti di logica applicativa e quelli di sicurezza.

\subsection{Apache Tomcat}

E' un contenitore \gls{servlet} open source sviluppato dalla Apache Software Foundation. Implementa le specifiche JavaServer Pages (JSP) e Servlet di Sun Microsystems, fornendo quindi una piattaforma software per l'esecuzione di applicazioni Web sviluppate in linguaggio Java.
Si adatta perfettamente alle esigenze della nostra web application.


%\subsubsection{Eclipse}
%\subsubsection{Xcode}
%\subsubsection{Android SDK}

